﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DAO;
using Entidades;


namespace ProyectoCine.Usuarios
{
    public partial class MisReservas : System.Web.UI.Page,IGrilla
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                ViewState["Orden"] = "";
                cargarGrilla();
            }
        }

        public void cargarGrilla()
        {
            gvReserva.DataKeyNames = new string[] { "id_Reserva" };
            gvReserva.DataSource = ReservarDAO.cargarGrilla(Page.User.Identity.Name, ViewState["Orden"].ToString()); 
            gvReserva.DataBind();
        }

        protected void gvReserva_Sorting(object sender, GridViewSortEventArgs e)
        {
            ViewState["Orden"] = e.SortExpression;
            cargarGrilla();
        }

        protected void gvReserva_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvReserva.PageIndex = e.NewPageIndex;
            cargarGrilla();
        }

        protected void gvReserva_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                Entrada en = EntradaDAO.buscarPorId((int)gvReserva.SelectedDataKey.Value);
                Entidades.Funcion f = new Entidades.Funcion();
                f.IdPelicula = en.IdPelicula;
                f.IdCine = en.IdCine;
                f.IdHorario = en.IdHorario;
                f.NumeroSala = en.NumeroSala;
                f.Fecha = en.Fecha;
                List<Entrada> lista = EntradaDAO.buscarPorIdReserva((int)gvReserva.SelectedDataKey.Value);
                foreach (Entrada ent in lista)
                {
                    EntradaDAO.darBajaEntradas(ent.IdEntrada); 
                }               

                ReservarDAO.darBajaReserva((int)gvReserva.SelectedDataKey.Value);
                FuncionDAO.updateLugaresBaja(f, lista.Count);
                    cargarGrilla();
                    
                
            }
            catch (ApplicationException ae)
            {
                lblMensaje.Text = ae.Message;
            }
        }

      
       

       
    }
}